/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managedbean;

import applicationexcepcion.ProdottoException;
import ejb.common.FotoManagerLocal;
import ejb.common.MarchioManagerLocal;
import ejb.common.ProdottoManagerLocal;
import ejb.common.RepartoManagerLocal;
import ejb.registrazione.RegistrazioneLocal;
import entity.Foto;
import entity.Marchio;
import entity.Prodotto;
import entity.Reparto;
import java.io.Serializable;
import java.util.List;
import java.util.ResourceBundle;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;
import utility.ExceptionThrower;
import utility.ResourceBundleLoader;

/**
 *
 * @author Carmela
 */
public class RegistrazioneProdotto implements Serializable{
    @EJB
    private FotoManagerLocal fotoManager;
    @EJB
    private RegistrazioneLocal registrazione;
    @EJB
    private ProdottoManagerLocal prodottoManager;
    @EJB
    private RepartoManagerLocal repartoManager;
    @EJB
    private MarchioManagerLocal marchioManager;

    private Long codiceBarre;
    private String nome;
    private String descrizione;
    private Reparto reparto;
    private Marchio marchio;
    private Foto f;
    private List<Reparto> reparti;
    private List<Prodotto> prodotti;
    private List<Foto> listFoto;

    public Foto getF() {
        return f;
    }

    public void setF(Foto f) {
        this.f = f;
    }

    public List<Foto> getListFoto() {
        return listFoto;
    }

    public void setListFoto(List<Foto> listFoto) {
        this.listFoto = listFoto;
    }

    public List<Prodotto> getProdotti() {
        return prodotti;
    }

    public List<Reparto> getReparti() {
        return reparti;
    }

    public List<Marchio> getMarchi() {
        return marchi;
    }
    private List<Marchio> marchi;

    /**
     * Get the value of marchio
     *
     * @return the value of marchio
     */
    public Marchio getMarchio() {
        return marchio;
    }

    /**
     * Set the value of marchio
     *
     * @param marchio new value of marchio
     */
    public void setMarchio(Marchio marchio) {
        this.marchio = marchio;
    }

    /**
     * Get the value of reparto
     *
     * @return the value of reparto
     */
    public Reparto getReparto() {
        return reparto;
    }

    /**
     * Set the value of reparto
     *
     * @param reparto new value of reparto
     */
    public void setReparto(Reparto reparto) {
        this.reparto = reparto;
    }

    /**
     * Get the value of descrizione
     *
     * @return the value of descrizione
     */
    public String getDescrizione() {
        return descrizione;
    }

    /**
     * Set the value of descrizione
     *
     * @param descrizione new value of descrizione
     */
    public void setDescrizione(String descrizione) {
        this.descrizione = descrizione;
    }

    /**
     * Get the value of codiceBarre
     *
     * @return the value of codiceBarre
     */
    public Long getCodiceBarre() {
        return codiceBarre;
    }

    /**
     * Set the value of codiceBarre
     *
     * @param codiceBarre new value of codiceBarre
     */
    public void setCodiceBarre(Long codiceBarre) {
        this.codiceBarre = codiceBarre;
    }


    /**
     * Get the value of nome
     *
     * @return the value of nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * Set the value of nome
     *
     * @param nome new value of nome
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * Creates a new instance of RegistrazioneProdotto
     */
    public RegistrazioneProdotto() {
    }
    
    @PostConstruct
    public void init(){
        this.marchi=marchioManager.cercaTutto();
        this.reparti=repartoManager.cercaTutto();
        this.prodotti=prodottoManager.cercaTutto();
        this.listFoto=fotoManager.getFotoNonLegate();
        FacesContext.getCurrentInstance().getExternalContext().getSession(true);
    }
    
    public String registraProdotto(){
        FacesContext fc=FacesContext.getCurrentInstance();
        ResourceBundle rb=ResourceBundleLoader.getResourceBundle(fc);
        Marchio m=marchioManager.cercaPerId(marchio.getId());
        Reparto r=repartoManager.cercaPerId(reparto.getId());
        try {
            registrazione.registrazioneProdotto(codiceBarre, nome, descrizione, m, f, r);
            aggiornaProdotti();
        } catch (ProdottoException ex) {
            ExceptionThrower.throwMessageError(fc, rb, "prodottoErrorM");
        }
        ExceptionThrower.throwMessageInfo(fc, rb, "prodottoInfoM", nome);
        return "";
    }

    private void aggiornaProdotti() {
        this.prodotti=prodottoManager.cercaTutto();
        this.listFoto=fotoManager.getFotoNonLegate();
    }
}
